package com.suzus.medicineGraph.controller;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.suzus.medicineGraph.dao.MedicineRepository;
import com.suzus.medicineGraph.dao.SymptomRepository;
import com.suzus.medicineGraph.model.*;
import com.suzus.medicineGraph.model.dto.MedicineDTO;
import com.suzus.medicineGraph.model.dto.SymptomDTO;
import org.neo4j.driver.internal.value.PathValue;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.*;

@RestController
public class HelloController {

    @Autowired
    private ObjectMapper objectMapper;

    @Autowired
    private SymptomRepository symptomRepository;

    @Autowired
    private MedicineRepository medicineRepository;


    @GetMapping("/addMedicine")
    public void addMedicine() {
//        Medicine medicine = new Medicine();
//        medicine.setName("阿莫西林");
//        medicine.setDescribe("阿莫西林（Amoxicillin）是一种有机化合物，化学式为C16H19N3O5S，是一种抗生素药物，又称之为羟氨苄青霉素，属于青霉素家族的氨基青霉素类。其为白色或类白色的结晶型粉末，稍有特异的气味和苦味，是第二代青霉素的主要品种，系广谱半合成抗生素，能抑制细菌细胞壁的合成，具有高效的广谱抗菌作用，而且毒副作用很小，常用于治疗细菌感染，如中耳感染、链球菌性喉炎、肺炎、皮肤感染和尿路感染。世界卫生组织（WHO）推荐本品作为首选的β-内酰胺类口服抗生素，在口服抗生素中占有重要的位置。");
//        medicineRepository.save(medicine);
//
//        Medicine medicine1 = new Medicine();
//        medicine1.setName("阿司匹林");
//        medicine1.setDescribe("阿司匹林（Aspirin），又名乙酰水杨酸，是一种有机化合物，化学式为C9H8O4，为白色结晶性粉末，溶于乙醇、乙醚，微溶于水，主要用作解热镇痛、非甾体抗炎药，抗血小板聚集药，经近百年的临床应用，证明对缓解轻度或中度疼痛，如牙痛、头痛、神经痛、肌肉酸痛及痛经效果较好，亦用于感冒、流感等发热疾病的退热，治疗风湿痛等，能阻止血栓形成，临床上用于预防短暂脑缺血发作、心肌梗死、人工心脏瓣膜和静脉瘘或其他手术后血栓的形成。");
//        medicineRepository.save(medicine1);
//
//        Medicine medicine2 = new Medicine();
//        medicine2.setName("对乙酰氨基酚");
//        medicine2.setDescribe("对乙酰氨基酚，是一种有机化合物，化学式为C8H9NO2，是非那西丁的体内代谢产物，通过抑制下丘脑体温调节中枢前列腺素合成酶，减少前列腺素PGE1、缓激肽和组胺等的合成和释放。PGE1主要作用于神经中枢，它的减少将导致中枢体温调定点下降，体表温度感受器感觉相对较热，进而通过神经调节引起外周血管扩张、出汗而达到解热的作用，其抑制中枢神经系统前列腺素合成的作用与阿司匹林相似，但抗炎作用较弱。对血小板及凝血机制无影响。");
//        medicineRepository.save(medicine2);
//
//        Medicine medicine3 = new Medicine();
//        medicine3.setName("吲哚美辛");
//        medicine3.setDescribe("吲哚美辛，是一种有机化合物，化学式为C19H16ClNO4，主要用作解热镇痛、非甾体抗炎药。");
//        medicineRepository.save(medicine3);
//
//        Medicine medicine4 = new Medicine();
//        medicine4.setName("萘普生");
//        medicine4.setDescribe("萘普生（Naproxen），是一种有机化合物，化学式为C14H14O3，是一种非甾体抗炎药，具有抗炎、解热、镇痛作用，为PG合成酶抑制剂，对于风湿性关节炎及骨关节炎的疗效，类似阿司匹林，对因贫血、胃肠系统疾病或其他原因不能耐受阿司匹林、吲哚美辛等消炎镇痛药患者，本品可获得满意效果，同时抑制血小板的作用较小。");
//        medicineRepository.save(medicine4);
//
//        Medicine medicine5 = new Medicine();
//        medicine5.setName("布洛芬");
//        medicine5.setDescribe("布洛芬（ibuprofen）商品名：芬必得（Fenbid）、诺罗芬（Nurofen）、美林（Motrin）等，是一种非甾体抗炎药（NSAID），化学式为C13H18O2，布洛芬主要用于缓解轻至中度疼痛，包括头痛、牙痛、肌肉痛和关节痛。此外，它也常用于缓解发热和消炎。布洛芬常见的剂型包括片剂、胶囊剂、颗粒剂、注射剂等。本品可由口服或静脉注射给药，通常在给药后一小时内起效。布洛芬可能引起胃肠道不适，如胃痛、恶心、消化不良和腹泻。在长期高剂量使用下，还可能导致胃溃疡和消化道出血。此外，个别患者可能出现过敏反应、皮疹、头晕等不良反应。并且本品会提高心衰、肝衰竭和肾衰竭的风险。");
//        medicineRepository.save(medicine5);
//        Medicine medicine6 = new Medicine();
//        medicine6.setName("尼美舒利");
//        medicine6.setDescribe("美舒利，西药名。常用制剂有片剂、胶囊、颗粒、凝胶、干混悬剂等。为非甾体抗炎药和抗风湿药。适用于慢性关节炎症，如类风湿性关节炎和骨关节炎等。");
//        medicineRepository.save(medicine6);
//        Medicine medicine7 = new Medicine();
//        medicine7.setName("塞来昔布");
//        medicine7.setDescribe("塞来昔布胶囊，用于缓解骨关节炎的症状和体征、缓解成人类风湿关节炎的症状和体征、治疗成人急性疼痛。");
//        medicineRepository.save(medicine7);
//        Medicine medicine8 = new Medicine();
//        medicine8.setName("氨苯蝶啶");
//        medicine8.setDescribe("氨苯蝶啶，化学名称为2,4,7-三氨基-6-苯基蝶啶，是一种有机化合物，化学式为C12H11N7，主要用于治疗各类水肿，如心力衰竭、肝硬化及慢性肾炎引起的水肿和腹水，以及糖皮质激素治疗过程中发生的水钠潴留，常与排钾利尿药合用，亦用于对氢氯噻嗪或螺内酯无效的病例。");
//        medicineRepository.save(medicine8);
//        Medicine medicine9 = new Medicine();
//        medicine9.setName("普萘洛尔");
//        medicine9.setDescribe("普萘洛尔，分子式为C16H21NO2，呈白色无气味的结晶粉末，是一种药品，用于治疗多种原因所致的心律失常，如房性及室性早搏（效果较好）、窦性及室上性心动过速、心房颤动等，但室性心动过速宜慎用。锑剂中毒引起的心律失常，当其他药物无效时，可试用本品。此外，也可用于心绞痛、高血压、嗜铬细胞瘤（手术前准备）等。治心绞痛时，常与硝酸酯类合用。可提高疗效，并互相抵消其不良反应。对高血压有一定疗效，不易引起体位性低血压为其特点。");
//        medicineRepository.save(medicine);
//        Medicine medicine0 = new Medicine();
//        medicine0.setName("螺内酯");
//        medicine0.setDescribe("螺内酯，化学名称为17β-羟基-3-氧代-7α-(乙酰硫基)-17α-孕甾-4-烯-21-羧酸-γ-内酯，是一种人工合成的甾体化合物，化学式为C24H32O4S，主要用作低效利尿剂，其结构与醛固酮相似，为醛固酮的竞争性抑制剂。由于其仅作用于远曲小管和集合管，对肾小管其他各段无作用，故利尿作用较弱。另外，螺内酯对肾小管以外的醛固酮靶器官也有作用。");
//        medicineRepository.save(medicine0);
//        Medicine medicinea = new Medicine();
//        medicinea.setName("呋塞米");
//        medicinea.setDescribe("呋塞米，是一种有机化合物，化学式为C12H11ClN2O5S，是一种强效利尿药，主要用于治疗心，肝，肾等疾病引起的水肿");
//        medicineRepository.save(medicinea);
//        Medicine medicineb = new Medicine();
//        medicineb.setName("地尔硫卓");
//        medicineb.setDescribe("地尔硫卓（Diltiazem），又名硫氮卓酮，化学名称为(2S-顺)-(+)-5-[2-(二甲氨基)乙基]-2-(4-甲氧基苯基)-3-(乙酰氧基)-2,3-二氢-1,5-苯并硫氮䓬-4(5H)-酮，分子式为C22H26N2O4S，是一种钙离子拮抗剂，临床上用于高血压及冠心病心绞痛");
//        medicineRepository.save(medicineb);
//        Medicine medicinec = new Medicine();
//        medicinec.setName("维拉帕米");
//        medicinec.setDescribe("维拉帕米，分子式为C27H38N2O4，是一种罂粟碱的衍生物，为钙通道阻滞剂。在1962年被当作冠脉扩张剂。近年来用于治疗高血压、心绞痛、心律失常、脑血管病、手指血管痉挛、腹痛、食道失驰缓症、偏头痛、肺动脉高压和预防早产。");
//        medicineRepository.save(medicinec);
//        Medicine medicined = new Medicine();
//        medicined.setName("洛伐他汀");
//        medicined.setDescribe("洛伐他汀，是一种有机化合物，化学式为C24H36O5，是一种降血脂药，可使胆固醇的合成减少，也使低密度脂蛋白受体合成增加，主要作用部位在肝脏，结果使血胆固醇和低密度脂蛋白胆固醇水平降低，由此对动脉粥样硬化和冠心病的防治产生作用。");
//        medicineRepository.save(medicined);
//        Medicine medicinee = new Medicine();
//        medicinee.setName("阿托伐他汀钙");
//        medicinee.setDescribe("阿托伐他汀钙（Atorvastatin calcium），是一种有机化合物，化学式为C66H68CaF2N4O10，为他汀类血脂调节药，主要作用部位在肝脏，可减少胆固醇的合成，增加低密度脂蛋白受体合成，使血胆固醇和低密度脂蛋白胆固醇水平降低，中度降低血清甘油三酯水平和增高血高密度脂蛋白水平。本品蛋白结合率为98%，大部分以代谢物的形式经胆汁排出。");
//        medicineRepository.save(medicinee);
//        Medicine medicinef = new Medicine();
//        medicinef.setName("非诺贝特");
//        medicinef.setDescribe("非诺贝特（fenofibrate），是一种有机化合物，化学式为C20H21ClO4，为白色至淡黄色结晶性粉末，主要用作降血脂药，用来降低有心血管疾病风险的患者的胆固醇水平。与其他贝特类药物一样，非诺贝特降低低密度脂蛋白（LDL）和极低密度脂蛋白（VLDL）水平，并且能升高高密度脂蛋白（HDL）水平和降低甘油三酯（TG）水平。非诺贝特可以单独使用也可以与他汀类药物联用来治疗高胆固醇血症和高甘油三酯血症。");
//        medicineRepository.save(medicinef);
//        Medicine medicineg = new Medicine();
//        medicineg.setName("瑞舒伐他汀钙");
//        medicineg.setDescribe("瑞舒伐他汀钙是一种有机化合物，分子式为C44H54CaF2N6O12S2，是选择性3-羟基-3-甲基戊二酰辅酶A（HMG-CoA）还原酶抑制剂，通过抑制HMG-CoA还原酶，减少肝细胞合成及储存胆固醇，从而降低血中总胆固醇（TC）和低密度脂蛋白胆固醇（LDL-C）水平。");
//        medicineRepository.save(medicineg);
//        Medicine medicineh = new Medicine();
//        medicineh.setName("吉非罗齐");
//        medicineh.setDescribe("吉非罗齐，又名吉非贝齐，是一种有机化合物，化学式为C15H22O3，主要用作血脂调节药，降低含总胆固醇（TC）最高的极低密度脂蛋白胆固醇（VLDL-ch），抑制其运转内源性甘油三酯（TG），降低TG。但对含胆固醇最高的低密度脂蛋白胆固醇（LDL-ch）则降低较少，只能轻度抑制其运转外源性胆固醇，同时提高含蛋白质最高的高密度脂蛋白胆固醇（HDL-ch）中的胆固醇含量，故对总胆固醇降低甚微，这一作用可能有益于抑制动脉粥样硬化过程。");
//        medicineRepository.save(medicineh);
//        Medicine medicinei = new Medicine();
//        medicinei.setName("马来酸氯苯那敏");
//        medicinei.setDescribe("马来酸氯苯那敏，是一种有机化合物，化学式为C20H23ClN2O4，主要用作抗组胺药，用于鼻炎、皮肤黏膜过敏及缓解流泪、打喷嚏、流涕等感冒症状。");
//        medicineRepository.save(medicinei);
//        Medicine medicinej = new Medicine();
//        medicinej.setName("咖啡因");
//        medicinej.setDescribe("咖啡因，化学式为C8H10N4O2，是一种黄嘌呤生物碱化合物，是一种中枢神经兴奋剂，能够暂时的驱走睡意并恢复精力，临床上用于昏迷复苏。有咖啡因成分的咖啡、茶、软饮料及能量饮料十分畅销，因此，咖啡因也是世界上最普遍被使用的精神药品。");
//        medicineRepository.save(medicinej);
//        Medicine medicinek = new Medicine();
//        medicinek.setName("肾上腺素");
//        medicinek.setDescribe("肾上腺素（adrenaline,epinephrine，英文大写缩写为A 或 E）是由人体分泌出的一种激素。当人经历某些刺激（例如兴奋，恐惧，紧张等）分泌出这种化学物质，能让人呼吸加快（提供大量氧气），心跳与血液流动加速，瞳孔放大，为身体活动提供更多能量，使反应更加快速。肾上腺素是一种激素和神经传送体，由肾上腺释放。肾上腺素会使心脏收缩力上升，使心脏、肝、和筋骨的血管扩张和皮肤、粘膜的血管收缩，是拯救濒死的人或动物的必备品。其生物合成主要是在髓质各细胞中首先形成去甲肾上腺素，然后进一步经苯乙胺-N-甲基转移酶（phenylethanolamine N-methyl transferase,PNMT）的作用，使去甲肾上腺素甲基化形成肾上腺素。");
//        medicineRepository.save(medicinek);
//        Medicine medicinel = new Medicine();
//        medicinel.setName("阿托品");
//        medicinel.setDescribe("阿托品是一种抗胆碱药，化学式是C17H23NO3，为M-受体阻断剂。它是从茄科植物颠茄、曼陀罗或莨菪等提取的消旋莨菪碱，其硫酸盐为无色结晶或白色粉末，易溶于水。 [1-2]主要解除平滑肌痉挛，量大可解除小血管痉挛，改善微循环，同时抑制腺体分泌，解除迷走神经对心脏的抑制，使心搏加快、瞳孔散大、眼压升高，兴奋呼吸中枢，解除呼吸抑制。阿托品易从胃肠道及其他黏膜吸收，也可从眼或少量从皮肤吸收。它可迅速分布于全身组织，可以透过血-脑脊液屏障，也能通过胎盘。它在包括乳汁在内的各分泌物中都有微量出现。");
//        medicineRepository.save(medicinel);
//        Medicine medicinem = new Medicine();
//        medicinem.setName("胺碘酮");
//        medicinem.setDescribe("胺碘酮，属Ⅲ类抗心律失常药，是具有轻度非竞争性的α及β肾上腺素受体阻滞剂，且具轻度Ⅰ及Ⅳ类抗心律失常药性质。主要电生理效应是延长各部心肌组织的动作电位及有效不应期，有利于消除折返激动。抑制心房及心肌传导纤维的快钠离子内流，减慢传导速度。减低窦房结自律性。对静息膜电位及动作电位高度无影响。对房室旁路前向传导的抑制大于逆向。由于复极过度延长，心电图有Q-T间期延长及T波改变。静注有轻度负性肌力作用， 但通常不抑制左室功能。对冠状动脉及周围血管有直接扩张作用。可影响甲状腺素代谢。");
//        medicineRepository.save(medicinem);
//        Medicine medicinen = new Medicine();
//        medicinen.setName("硫酸镁");
//        medicinen.setDescribe("硫酸镁，是一种含镁的化合物，分子式为MgSO4，是一种常用的化学试剂及干燥试剂，为无色或白色晶体或粉末，无臭、味苦，有潮解性。 临床用于导泻、利胆、抗惊厥、子痫、破伤风、高血压等症。");
//        medicineRepository.save(medicinen);
//        Medicine medicineo = new Medicine();
//        medicineo.setName("酮咯酸氨丁三醇");
//        medicineo.setDescribe("酮咯酸氨丁三醇是一种非甾体抗炎剂，常用于大部分痛症缓解。适用于短期消除创伤和术后疼痛、肿痛、剧烈痛及各种原因引起的疼痛。片剂或注射液可用于缓解中度至剧烈的术后疼痛，包括腹部、胸部、妇科、口腔、矫形及泌尿科手术。此外，亦可缓解急性肾绞痛、胆绞痛、牙痛、创伤痛、三叉神经痛、癌症内脏痛，以及以往一切需用吗啡或哌替啶才能生效的各种疼痛症。");
//        medicineRepository.save(medicineo);
//        Medicine medicinep = new Medicine();
//        medicinep.setName("优普林");
//        medicinep.setDescribe("优普林可用于治疗对葡萄球菌、卡他球菌、淋球菌、大肠杆菌、克雷白杆菌、部分变形杆菌、脆弱拟杆菌等产酶和不产酶株均有较好的抗菌作用。对不产酶的肺炎链球菌、化脓性链球菌、绿色链球菌、梭状芽胞杆菌、消化链球菌等。敏感菌所致的下呼吸道、泌尿道、胆道、皮肤软组织、中耳、鼻窦部位感染。");
//        medicineRepository.save(medicinep);
//        Medicine medicineq = new Medicine();
//        medicineq.setName("酚磺乙胺");
//        medicineq.setDescribe("酚磺乙胺，是一种有机化合物，化学式为C10H17NO5S，常温下为白色结晶性粉末，易溶于水，溶于乙醇，微溶于丙酮，不溶于氯仿、乙醚，有引湿性，遇光易变质，无臭，味苦。酚磺乙胺能降低毛细血管通透性，增强血小板的功能及粘合力，促进血小板释放凝血活性物质，缩短凝血时间而止血，用于防治手术前后和各种血管因素出血。对脑、肺、肝、消化道、泌尿道出血有效。");
//        medicineRepository.save(medicineq);
//        Medicine mediciner = new Medicine();
//        mediciner.setName("硝酸甘油");
//        mediciner.setDescribe("硝酸甘油（Nitroglycerin），是甘油的三硝酸酯，可直接松弛血管平滑肌特别是小血管平滑肌，使周围血管舒张，外周阻力减小，回心血量减少，心排出量降低，心脏负荷减轻，心肌氧耗量减少，因而心绞痛得到缓解。此外，尚能促进侧支循环的形成。舌下含服1片，2~3分钟即发挥作用，作用大约维持30分钟。对其他平滑肌也有松弛作用，尚可解除胆绞痛、幽门痉挛、肾绞痛等，但作用短暂，临床意义不大。");
//        medicineRepository.save(mediciner);
//        Medicine medicines = new Medicine();
//        medicines.setName("链激酶");
//        medicines.setDescribe("链激酶(Streptokinase，SK)是世界上最早发现的纤维蛋白溶酶原激活剂，也是最早作为临床药品治疗血栓性疾病的溶栓酶。它是由A，C，G群链球菌中口一溶血性链球菌分泌的胞外非酶蛋白质，能和纤溶酶原结合，将纤溶酶原激活为纤溶酶，具有溶解血栓的作用。本文详细综述了该酶的性质、在溶栓酶中的地位、研究历史、作用机理等。此外，由于它有半衰期短、不具有纤维蛋白特异性、治疗后出血和血栓易复发的缺点，所以有必要用基因工程的手段进行改造，以达到更好的治疗效果。");
//        medicineRepository.save(medicines);
//        Medicine medicine = new Medicine();
//        medicine.setName("多巴胺");
//        medicine.setDescribe("可激发交感神经系统肾上腺素受体和位于肾、肠系膜、冠状动脉、脑动脉的多巴胺系统。效应与剂量有关：小量时，每分钟按体重0.5～2μg/kg使肾及肠系膜血管扩张；而小到中量，每分钟按体重2～10μg/kg对心肌产生正性应力作用；大量时，每分钟按体重大于10μg/kg，使肾血流量减少，收缩压及舒张压增高。适用于洋地黄及利尿药无效的心功能不全。用于治疗帕金森病、心脏手术、肾功能衰竭、充血性心力衰竭、心肌梗死、内毒素败血症、创伤等引起的休克综合征及补充血容量效果不佳的休克。");
//        medicineRepository.save(medicine);
    }

    @GetMapping("/addSymptom")
    public void addSymptom() {
//        Symptom symptom = new Symptom();
//        symptom.setName("高血压");
//        symptom.setDescribe("高血压（也称血压升高），是血液在流动时对血管壁造成的压力值持续高于正常的现象。根据《中国高血压临床实践指南》，成人高血压的诊断标准是收缩压≥130mmHg和/或舒张压≥80mmHg。高血压的发病原因多为遗传因素和不健康的生活方式，如高盐饮食、过量饮酒、长期精神紧张和体力活动不足等。高血压在5类人群中易发：有家族史的人群；情绪易激动的人群；摄入盐量偏高的人群；嗜酒人群；工作或生活压力大的人群。");
//        symptomRepository.save(symptom);
//
//        Symptom symptom1 = new Symptom();
//        symptom1.setName("高血脂");
//        symptom1.setDescribe("高脂血症，也称高血脂或血脂异常，通常指血浆中甘油三酯和（或）总胆固醇升高，低密度脂蛋白胆固醇升高和高密度脂蛋白胆固醇降低。该症的发生可见于不同年龄和性别的人群，尤其常见于50~69岁人群，有明显的遗传倾向。疾病的发病原因包括基因突变、多种环境因素，如不良饮食习惯、体力活动不足、肥胖等，以及其他疾病如糖尿病、肾病综合征、肝脏疾病等。");
//        symptomRepository.save(symptom1);
//
//        Symptom symptom2 = new Symptom();
//        symptom2.setName("感冒");
//        symptom2.setDescribe("感冒是指百姓所说的“普通感冒”，又称“伤风”、急性鼻炎或上呼吸道感染。感冒是一种常见的急性上呼吸道病毒性感染性疾病，多由鼻病毒、副流感病毒、呼吸道合胞病毒、埃可病毒、柯萨奇病毒、冠状病毒、腺病毒等引起。临床表现为鼻塞、喷嚏、流涕、发热、咳嗽、头痛等，多呈自限性。大多散发，冬、春季节多发，季节交替时多发。");
//        symptomRepository.save(symptom2);
//
//        Symptom symptom3 = new Symptom();
//        symptom3.setName("头疼");
//        symptom3.setDescribe("头痛（headache）是临床常见的症状，通常将局限于头颅上半部，包括眉弓、耳轮上缘和枕外隆突连线以上部位的疼痛统称头痛。头痛病因繁多，神经痛、颅内感染、颅内占位病变、脑血管疾病、颅外头面部疾病、以及全身疾病如急性感染、中毒等均可导致头痛。发病年龄常见于青年、中年和老年。");
//        symptomRepository.save(symptom3);
//
//        Symptom symptom4 = new Symptom();
//        symptom4.setName("咳嗽");
//        symptom4.setDescribe("咳嗽（cough）是一种呼吸道常见症状，由于气管、支气管黏膜或胸膜受炎症、异物、物理或化学性刺激引起，表现先是声门关闭、呼吸肌收缩、肺内压升高，然后声门张开，肺内空气喷射而出，通常伴随声音。咳嗽具有清除呼吸道异物和分泌物的保护性作用。但如果咳嗽不停，由急性转为慢性，常给患者带来很大的痛苦，如胸闷、咽痒、喘气等。咳嗽可伴随咳痰。");
//        symptomRepository.save(symptom4);
//
//        Symptom symptom5 = new Symptom();
//        symptom5.setName("肠炎");
//        symptom5.setDescribe("肠炎是细菌、病毒、真菌和寄生虫等引起的小肠炎和结肠炎。临床表现主要有腹痛、腹泻、稀水便或黏液脓血便。部分病人可有发热及里急后重感觉，故亦称感染性腹泻。肠炎按病程长短不同，分为急性和慢性两类。慢性肠炎病程一般在两个月以上，临床常见的有慢性细菌性痢疾、慢性阿米巴痢疾、血吸虫病、非特异性溃疡性结肠炎和局限性肠炎等。");
//        symptomRepository.save(symptom5);
//
//        Symptom symptom6 = new Symptom();
//        symptom6.setName("胃炎");
//        symptom6.setDescribe("胃炎（gastritis）是各种原因引起的胃黏膜炎症，为最常见的消化系统疾病之一。按临床发病的缓急，一般可分为急性和慢性胃炎两大类型；按病因不同可分为幽门螺杆菌相关性胃炎、应激性胃炎、自身免疫性胃炎等。不同病因引起的胃炎其病理改变亦不同，通常包括三个过程即上皮损伤、黏膜炎症反应和上皮再生。急性胃炎根据其病理改变又可分为单纯性、糜烂出血性、腐蚀性、化脓性胃炎等，慢性胃炎根据其病理改变可分为非萎缩性、萎缩性和特殊类型胃炎三大类。各型胃炎的诊断和鉴别诊断主要依据胃镜检查。");
//        symptomRepository.save(symptom6);
//
//        Symptom symptom7 = new Symptom();
//        symptom7.setName("哮喘");
//        symptom7.setDescribe("支气管哮喘，简称哮喘，是一种常见的慢性炎症性气道疾病，主要特征为气道出现反复发作的喘息、气急、胸闷或咳嗽等症状，常在夜间及凌晨发作或加重。哮喘的发病与遗传及环境等因素有关，其中遗传因素主要决定患者的易发体质，而环境因素如各种变应原、空气质量、吸烟、运动等则是具体触发因素。常见的支气管哮喘类型有运动性、药物性、职业性及过敏性等。");
//        symptomRepository.save(symptom7);

    }

    @GetMapping("addRelation")
    public void addRelation() {
//        medicineRepository.createRelation("对乙酰氨基酚","发烧");
        medicineRepository.createRelation("对乙酰氨基酚","感冒");
        medicineRepository.createRelation("马来酸氯苯那敏","感冒");
        medicineRepository.createRelation("咖啡因","感冒");
        medicineRepository.createRelation("氨苯蝶啶","高血压");
        medicineRepository.createRelation("普萘洛尔","高血压");
        medicineRepository.createRelation("螺内酯","高血压");
        medicineRepository.createRelation("呋塞米","高血压");
        medicineRepository.createRelation("地尔硫卓","高血压");
        medicineRepository.createRelation("维拉帕米","高血压");
        medicineRepository.createRelation("洛伐他汀","高血脂");
        medicineRepository.createRelation("阿托伐他汀钙","高血脂");
        medicineRepository.createRelation("非诺贝特","高血脂");
        medicineRepository.createRelation("瑞舒伐他汀钙","高血脂");
        medicineRepository.createRelation("吉非罗齐","高血脂");


    }

    @GetMapping("/getData")
    public void getData() throws JsonProcessingException {

        List<Medicine> medicineRepositoryAll = medicineRepository.findAll();
        List<MedicineDTO> medicineDTOS = medicineRepositoryAll.stream().map(
                medicine -> {
                    MedicineDTO medicineDTO = new MedicineDTO();
                    BeanUtils.copyProperties(medicine, medicineDTO);
                    medicineDTO.setLabel("medicine");
                    return medicineDTO;
                }).toList();
        System.out.println(medicineDTOS);

        System.out.println(objectMapper.writeValueAsString(medicineDTOS));

        List<Symptom> symptomList = symptomRepository.findAll();

        List<SymptomDTO> symptomDTOS = symptomList.stream().map(
                symptom -> {
                    SymptomDTO symptomDTO = new SymptomDTO();
                    BeanUtils.copyProperties(symptom, symptomDTO);
                    symptomDTO.setLabel("symptom");
                    return symptomDTO;
                }).toList();

        System.out.println(objectMapper.writeValueAsString(symptomDTOS));

        ArrayList<PathValue> pathValues = medicineRepository.queryRelation();
//        System.out.println(pathValues);
        ArrayList<HashMap<String,String>> result = new ArrayList<>();
        for (PathValue pathValue : pathValues) {
//            System.out.println(pathValue.asPath().start().toString()+pathValue.asPath().end()+":classmate");
//            System.out.println(pathValue.asPath().start().id()+" "+pathValue.asPath().end().id());

            HashMap<String,String>path=new HashMap<>();
            path.put("source", String.valueOf(pathValue.asPath().start().id()));
            path.put("target", String.valueOf(pathValue.asPath().end().id()));
            path.put("type","治疗");
            result.add(path);
        }

        System.out.println(objectMapper.writeValueAsString(result));
    }
    @GetMapping("getSingleMedicine")
    public void getSingleMedicine(){
        ArrayList<PathValue> pathValues = symptomRepository.querySymptomRelation("高血压");
        System.out.println(pathValues);

        ArrayList<Long> FromIds = new ArrayList<>();
        for (PathValue pathValue : pathValues) {
            FromIds.add(pathValue.asPath().start().id());
            System.out.println(pathValue.asPath().start().values());
        }

//        System.out.println(FromIds);

//        List<Medicine> allById = medicineRepository.findAllById(FromIds);

//        System.out.println(allById);
    }

    @GetMapping("getAllRelation")
    public String findAllRelationShips() {
        ArrayList<PathValue> pathValues = medicineRepository.queryRelation();

        ArrayList<HashMap<String,String>> result = new ArrayList<>();
        for (PathValue pathValue : pathValues) {
//            System.out.println(pathValue.asPath().start().toString()+pathValue.asPath().end()+":classmate");
//            System.out.println(pathValue.asPath().start().id()+" "+pathValue.asPath().end().id());
            HashMap<String,String>path=new HashMap<>();
            path.put("source", String.valueOf(pathValue.asPath().start().id()));
            path.put("target", String.valueOf(pathValue.asPath().end().id()));
            path.put("type","治疗");
            result.add(path);
        }

//        pathValues.stream().map(
//                pathValue -> {
//
//                    MedicineDTO medicineDTO = new MedicineDTO();
//                    BeanUtils.copyProperties();
//                }
//        )

        return null;
    }



}





/*
[{"id":2,"name":"多巴胺","describe":"可激发交感神经系统肾上腺素受体和位于肾、肠系膜、冠状动脉、"}
        ,{"id":4,"name":"阿莫西林","describe":"阿莫西林（Amoxicillin）是一种有机化合物，物，"}
        ,{"id":5,"name":"阿司匹林","describe":"阿司匹林（Aspirin），又名乙酰水杨酸，是一种有末，溶于乙醇"}
        ,{"id":6,"name":"对乙酰氨基酚","describe":"对乙酰氨基酚，是一种有机化合物，化学式为C8H9"}
        ,{"id":9,"name":"吲哚美辛","describe":"吲哚美辛，是一种有机化合物，化学式为"},
        ,{"id":10,"name":"萘普生","describe":"萘普生（Naproxen），是一种有机化合物，化学式炎、解"}
        ,{"id":11,"name":"布洛芬","describe":"布洛芬（ibuprofen）商品名：芬必得（Fenbrin"}
        ,{"id":12,"name":"尼美舒利","describe":"美舒利，西药名。常用制剂有片剂、胶囊、颗粒、"}
        ,{"id":13,"name":"塞来昔布","describe":"塞来昔布胶囊，用于缓解骨关节炎的症状和体征、缓解成"}
        ,{"id":14,"name":"氨苯蝶啶","describe":"氨苯蝶啶，化学名称为2,4,7-三氨基-6-苯基蝶。"}
        ,{"id":15,"name":"螺内酯","describe":"螺内酯，化学名称为17β-羟基-3-氧代-7α-(乙"}
        ,{"id":16,"name":"呋塞米","describe":"呋塞米，是一种有机化合物，化学式为C12H11ClN"}
        ,{"id":17,"name":"地尔硫卓","describe":"地尔硫卓（Diltiazem），又名硫氮卓酮"}
        ,{"id":18,"name":"维拉帕米","describe":"维拉帕米，分子式为C27H38N2O4，是一"}
        ,{"id":19,"name":"洛伐他汀","describe":"洛伐他汀，是一种有机化合物，化学式为C2"}
        ,{"id":20,"name":"阿托伐他汀钙","describe":"阿托伐他汀钙（Atorvastatin 度脂"}
        ,{"id":21,"name":"非诺贝特","describe":"非诺贝特（fenofibrate），是一种有DL症。"}
        ,{"id":22,"name":"瑞舒伐他汀钙","describe":"瑞舒伐他汀钙是一种有机化合物，分子式为C固醇"}
        ,{"id":23,"name":"吉非罗齐","describe":"吉非罗齐，又名吉非贝齐，是一种有机化合物"}
        ,{"id":24,"name":"马来酸氯苯那敏","describe":"马来酸氯苯那敏，是一种有机化合物，"}
        ,{"id":25,"name":"咖啡因","describe":"咖啡因，化学式为C8H10N4O2，是一种黄嘌畅。"}
        ,{"id":26,"name":"肾上腺素","describe":"肾上腺素（adrenaline,epinep呼是"}
        ,{"id":27,"name":"阿托品","describe":"阿托品是一种抗胆碱药，化学式是C17H23NO除于"}
        ,{"id":28,"name":"胺碘酮","describe":"胺碘酮，属Ⅲ类抗心律失常药，是具有轻度非竞争性激但。"}
        ,{"id":29,"name":"硫酸镁","describe":"硫酸镁，是一种含镁的化合物，分子式为MgSO4症。"}
        ,{"id":30,"name":"酮咯酸氨丁三醇","describe":"酮咯酸氨丁三醇是一种非甾体抗炎剂，常用部。"}
        ,{"id":31,"name":"优普林","describe":"优普林可用于治疗对葡萄球菌、卡他球菌、淋球菌、状。"}
        ,{"id":32,"name":"酚磺乙胺","describe":"酚磺乙胺，是一种有机化合物，化学式为C10H降"}
        ,{"id":33,"name":"硝酸甘油","describe":"硝酸甘油（Nitroglycerin），是甘耗"}
        ,{"id":34,"name":"链激酶","describe":"链激酶(Streptokinase，SK)是世非发的"}]

        [{"id":3,"name":"发烧","describe":"发热，俗称发烧，症状名，正常人在体温调节中枢的调控下，机体的产热和散热过程经常保持动态平衡，发热。"}
        ,{"id":35,"name":"高血压","describe":"高血压（也称血压升高），是血液在流动时对血管壁造成的压力值持续高于正常的现象。根据《中国传"}
        ,{"id":36,"name":"高血脂","describe":"高脂血症，也称高血脂或血脂异常，通常指血浆中甘油三酯和（或）总胆固醇升高，低密度脂蛋白胆。。"}
        ,{"id":37,"name":"感冒","describe":"感冒是指百姓所说的“普通感冒”，又称“伤风”、急性鼻炎或上呼吸道感染。感冒是一种常见的急性表。"}
        ,{"id":38,"name":"头疼","describe":"头痛（headache）是临床常见的症状，通常将局限于头颅上半部，包括眉弓、耳轮上缘和枕外病年。"}
        ,{"id":39,"name":"咳嗽","describe":"咳嗽（cough）是一种呼吸道常见症状，由于气管、支气管黏膜或胸膜受炎症、异物、物理或化学道等。"}
        ,{"id":40,"name":"肠炎","describe":"肠炎是细菌、病毒、真菌和寄生虫等引起的小肠炎和结肠炎。临床表现主要有腹痛、腹泻、稀水便或黏在。"}
        ,{"id":41,"name":"胃炎","describe":"胃炎（gastritis）是各种原因引起的胃黏膜炎症，为最常见的消化系统疾病之一。按临床发病改"}
        ,{"id":42,"name":"哮喘","describe":"支气管哮喘，简称哮喘，是一种常见的慢性炎症性气道疾病，主要特征为气道出现反复发作的喘息"}]
*/
